/* eslint no-console:0 */
//
// Demonstrate some of the basics.
//
const Client = require('kubernetes-client').Client


async function main () {
  try {
    const client = new Client({ version: '1.9' })

    //
    // Get all the ns3 service.
    //
    const service = await client.api.v1.namespaces('default').pods().get()
    console.log('service: ', service.body.items)
    items = service.body.items
    console.log(items[0].metadata.labels);
    console.log(items[0].metadata.labels.app);
    console.log('items: ', items);
    ns3_items = items.filter(item => item.metadata.labels.app == 'node-ns3')
    ips = ns3_items.map(item => item.status.podIP)
    console.log('ips: ', ips);

//     //
//     // Create a new Deployment.
//     //
//     const create = await client.apis.apps.v1.namespaces('default').deployments.post({ body: deploymentManifest })
//     console.log('Create: ', create)

    //
    // Fetch the Deployment ns3
    //
    const deployment = await client.apis.apps.v1.namespaces('default').deployments('node-ns3').get()
    console.log('Deployment: ', deployment)

    //
    // Change the Deployment Replica count to 10
    //

    const replica = {
      spec: {
        replicas: 2
      }
    }

    const replicaModify = await client.apis.apps.v1.namespaces('default').deployments('node-ns3').patch({ body: replica })
    console.log('Replica Modification: ', replicaModify)

//     //
//     // Modify the image tag
//     //
//     const newImage = {
//       spec: {
//         template: {
//           spec: {
//             containers: [{
//               name: 'nginx',
//               image: 'nginx:1.8.1'
//             }]
//           }
//         }
//       }
//     }
//     const imageSet = await client.apis.apps.v1.namespaces('default').deployments(deploymentManifest.metadata.name).patch({ body: newImage })
//     console.log('New Image: ', imageSet)

//     //
//     // Remove the Deployment we created.
//     //
//     const removed = await client.apis.apps.v1.namespaces('default').deployments(deploymentManifest.metadata.name).delete()
//     console.log('Removed: ', removed)
  } catch (err) {
    console.error('Error: ', err)
  }
}

main()